home *** CD-ROM | disk | FTP | other *** search
/ Windows Expert / Windows Expert.iso / program / tpw_mmex.zip / MMTYPES.PAS < prev    next >
Pascal/Delphi Source File  |  1991-12-18  |  53KB  |  1,397 lines

  1. {***********************************************************************}
  2. {                                                                       }
  3. {  Microsoft Multimedia System Structures and Constants                 }
  4. {  Links to the mmsystem.dll in the Microsoft Multimedia Extensions     }
  5. {  Converted by Steve Milton @ ISOMEDIA, Inc. for use with              }
  6. {  Borland's Turbo Pascal for Windows                                   }
  7. {                                                                       }
  8. {  These units are provided as-is with no warranty.  Any damages to     }
  9. {  equipment, peripherals, software, or anything else is solely the     }
  10. {  responsibility of the user.                                          }
  11. {                                                                       }
  12. {  Microsoft Multimedia Extensions is a trademark of Microsoft, Corp.   }
  13. {  Turbo Pascal for Windows is a trademakr of Borland International     }
  14. {                                                                       }
  15. {***********************************************************************}
  16.  
  17. UNIT MMTypes;
  18.  
  19. INTERFACE
  20.  
  21. uses WinTypes;
  22.  
  23. CONST
  24.   SND_SYNC =           $0000;  { play synchronously (default)           }
  25.   SND_ASYNC =          $0001;  { play asynchronously                    }
  26.   SND_NODEFAULT =      $0002;  { don't use default sound                }
  27.   SND_MEMORY =         $0004;  { lpszSoundName points to a memory file  }
  28.   SND_LOOP =           $0008;  { loop the sound until next sndPlaySound }
  29.   SND_NOSTOP =         $0010;  { don't stop any currently playing sound }
  30.  
  31.   MAXPNAMELEN =     32;     { max product name length (including NULL)   }
  32.   MAXERRORLENGTH =  128;    { max error text length (including NULL)     }
  33.  
  34.   TIME_MS         = $0001;  { time in milliseconds    }
  35.   TIME_SAMPLES    = $0002;  { number of wave samples    }
  36.   TIME_BYTES      = $0004;  { current byte offset    }
  37.   TIME_SMPTE      = $0008;  { SMPTE time      }
  38.   TIME_MIDI       = $0010;  { MIDI time      }
  39.  
  40. {****************************************************************************
  41.  
  42.                     Multimedia Extensions Window Messages
  43.  
  44. ***************************************************************************}
  45.  
  46.   MM_JOY1MOVE         = $03A0;           { joystick        }
  47.   MM_JOY2MOVE         = $03A1;
  48.   MM_JOY1ZMOVE        = $03A2;
  49.   MM_JOY2ZMOVE        = $03A3;
  50.   MM_JOY1BUTTONDOWN   = $03B5;
  51.   MM_JOY2BUTTONDOWN   = $03B6;
  52.   MM_JOY1BUTTONUP     = $03B7;
  53.   MM_JOY2BUTTONUP     = $03B8;
  54.  
  55.   MM_MCINOTIFY        = $03B9;           { MCI          }
  56.   MM_MCISYSTEM_STRING = $03CA;
  57.  
  58.   MM_WOM_OPEN         = $03BB;           { waveform output      }
  59.   MM_WOM_CLOSE        = $03BC;
  60.   MM_WOM_DONE         = $03BD;
  61.  
  62.   MM_WIM_OPEN         = $03BE;           { waveform input      }
  63.   MM_WIM_CLOSE        = $03BF;
  64.   MM_WIM_DATA         = $03C0;
  65.          
  66.   MM_MIM_OPEN         = $03C1;           { MIDI input       }
  67.   MM_MIM_CLOSE        = $03C2;
  68.   MM_MIM_DATA         = $03C3;
  69.   MM_MIM_LONGDATA     = $03C4;
  70.   MM_MIM_ERROR        = $03C5;
  71.   MM_MIM_LONGERROR    = $03C6;
  72.          
  73.   MM_MOM_OPEN         = $03C7;           { MIDI output       }
  74.   MM_MOM_CLOSE        = $03C8;
  75.   MM_MOM_DONE         = $03C9;
  76.  
  77.  
  78. {***************************************************************************
  79.  
  80.                 String resource number bases (internal use)
  81.  
  82. ***************************************************************************}
  83.  
  84.   MMSYSERR_BASE      =    0;
  85.   WAVERR_BASE        =    32;
  86.   MIDIERR_BASE       =    64;
  87.   TIMERR_BASE        =    96;
  88.   JOYERR_BASE        =    160;
  89.   MCIERR_BASE        =    256;
  90.  
  91.   MCI_STRING_OFFSET  =    512;
  92.   MCI_VD_OFFSET      =    1024;
  93.   MCI_CD_OFFSET      =    1088;
  94.   MCI_WAVE_OFFSET    =    1152;
  95.   MCI_SEQ_OFFSET     =    1216;
  96.  
  97. {***************************************************************************
  98.  
  99.                         General error return values
  100.  
  101. ***************************************************************************}
  102.  
  103. { general error return values               }
  104.   MMSYSERR_NOERROR   =   0;                    { no error      }
  105.   MMSYSERR_ERROR     =   (MMSYSERR_BASE + 1);  { unspecified error   }
  106.   MMSYSERR_BADDEVICEID=  (MMSYSERR_BASE + 2);  { device ID out of range }
  107.   MMSYSERR_NOTENABLED =  (MMSYSERR_BASE + 3);  { driver failed enable  }
  108.   MMSYSERR_ALLOCATED  =  (MMSYSERR_BASE + 4);  { device already allocated}
  109.   MMSYSERR_INVALHANDLE=  (MMSYSERR_BASE + 5);  { device handle is invalid}
  110.   MMSYSERR_NODRIVER   =  (MMSYSERR_BASE + 6);  { no device driver present}
  111.   MMSYSERR_NOMEM      =  (MMSYSERR_BASE + 7);  { memory allocation error }
  112.   MMSYSERR_NOTSUPPORTED= (MMSYSERR_BASE + 8);  { function isn't supported}
  113.   MMSYSERR_BADERRNUM   = (MMSYSERR_BASE + 9);  { error value out of range}
  114.   MMSYSERR_LASTERROR   = (MMSYSERR_BASE + 9);  { last error in range   }
  115.          
  116.  
  117. {***************************************************************************
  118.  
  119.                         Installable driver support
  120.  
  121. ***************************************************************************}
  122.  
  123. { return values from DriverProc() function           }
  124.   DRV_CANCEL             = $0000;
  125.   DRV_OK                 = $0001;
  126.   DRV_RESTART            = $0002;
  127.  
  128. { messages sent to DriverProc() function            }
  129.   DRV_LOAD               = $0001;
  130.   DRV_ENABLE             = $0002;
  131.   DRV_OPEN               = $0003;
  132.   DRV_CLOSE              = $0004;
  133.   DRV_DISABLE            = $0005;
  134.   DRV_FREE               = $0006;
  135.   DRV_CONFIGURE          = $0007;
  136.   DRV_QUERYCONFIGURE     = $0008;
  137.   DRV_INSTALL            = $0009;
  138.   DRV_REMOVE             = $000A;
  139.  
  140.   DRV_RESERVED           = $0800;
  141.  
  142.   DRV_MCI_FIRST        =  DRV_RESERVED;
  143.   DRV_MCI_LAST         =  (DRV_RESERVED + $0FFF);
  144.  
  145.   DRV_USER               = $4000;
  146.  
  147. {***************************************************************************
  148.  
  149.                           Driver callback support
  150.  
  151. ***************************************************************************}
  152.  
  153. { flags used with waveOutOpen(), waveInOpen(), midiInOpen(), and     }
  154. { midiOutOpen() to specify the type of the dwCallback parameter.   }
  155.   CALLBACK_TYPEMASK   = $00070000;    { callback type mask     }
  156.   CALLBACK_NULL       = $00000000;    { no callback       }
  157.   CALLBACK_WINDOW     = $00010000;    { dwCallback is a HWND    }
  158.   CALLBACK_TASK       = $00020000;    { dwCallback is a HTASK    }
  159.   CALLBACK_FUNCTION   = $00030000;    { dwCallback is a FARPROC   }
  160. {***************************************************************************
  161.  
  162.                          Manufacturer and product IDs
  163.  
  164.     Used with wMid and wPid fields in WAVEOUTCAPS, WAVEINCAPS, 
  165.     MIDIOUTCAPS, MIDIINCAPS, AUXCAPS, JOYCAPS structures.
  166.  
  167. ***************************************************************************}
  168.  
  169. { manufacturer IDs                  }
  170.   MM_MICROSOFT         =   1;       { Microsoft Corp.
  171.  
  172. { product IDs                     }
  173.   MM_MIDI_MAPPER       =   1;       { MIDI Mapper         }
  174.   MM_WAVE_MAPPER       =   2;       { Wave Mapper         }
  175.  
  176.   MM_SNDBLST_MIDIOUT   =   3;       { Sound Blaster MIDI output port  }
  177.   MM_SNDBLST_MIDIIN    =   4;       { Sound Blaster MIDI input port   }
  178.   MM_SNDBLST_SYNTH     =   5;       { Sound Blaster internal synthesizer }
  179.   MM_SNDBLST_WAVEOUT   =   6;       { Sound Blaster waveform output   }
  180.   MM_SNDBLST_WAVEIN    =   7;       { Sound Blaster waveform input   }
  181.                         
  182.   MM_ADLIB             =   9;       { Ad Lib-compatible synthesizer   }
  183.  
  184.   MM_MPU401_MIDIOUT    =   10;      { MPU401-compatible MIDI output port }
  185.   MM_MPU401_MIDIIN     =   11;      { MPU401-compatible MIDI input port }
  186.  
  187.   MM_PC_JOYSTICK       =   12;      { Joystick adapter       }
  188.  
  189. { waveform audio error return values            }
  190.   WAVERR_BADFORMAT     = (WAVERR_BASE + 0);    { unsupported wave format }
  191.   WAVERR_STILLPLAYING  = (WAVERR_BASE + 1);    { still something playing }
  192.   WAVERR_UNPREPARED    = (WAVERR_BASE + 2);    { header not prepared  }
  193.   WAVERR_LASTERROR     = (WAVERR_BASE + 2);    { last error in range  }
  194.  
  195. { wave callback messages                }
  196.   WOM_OPEN      =  MM_WOM_OPEN;
  197.   WOM_CLOSE     =  MM_WOM_CLOSE;
  198.   WOM_DONE      =  MM_WOM_DONE;
  199.   WIM_OPEN      =  MM_WIM_OPEN;
  200.   WIM_CLOSE     =  MM_WIM_CLOSE;
  201.   WIM_DATA      =  MM_WIM_DATA;
  202.       
  203. { device ID for wave device mapper             }
  204.   WAVE_MAPPER   =  -1;
  205.  
  206. { flags for dwFlags parameter in waveOutOpen() and waveInOpen()   }
  207.    WAVE_FORMAT_QUERY     = $0001;
  208.  
  209. { flags for dwFlags field of WAVEHDR            }
  210.   WHDR_DONE       = $00000001;  { done bit           }
  211.   WHDR_PREPARED   = $00000002;  { set if this header has been prepared }
  212.   WHDR_BEGINLOOP  = $00000004;  { loop start block        }
  213.   WHDR_ENDLOOP    = $00000008;  { loop end block         }
  214.   WHDR_INQUEUE    = $00000010;  { reserved for driver       }
  215.  
  216. { flags for dwSupport field of WAVEOUTCAPS          }
  217.   WAVECAPS_PITCH          = $0001;   { supports pitch control    }
  218.   WAVECAPS_PLAYBACKRATE   = $0002;   { supports playback rate control  }
  219.   WAVECAPS_VOLUME         = $0004;   { supports volume control    }
  220.   WAVECAPS_LRVOLUME       = $0008;   { separate left-right volume control}
  221.                         
  222. { defines for dwFormat field of WAVEINCAPS and WAVEOUTCAPS     }
  223.   WAVE_INVALIDFORMAT     = $00000000;       { invalid format     }
  224.   WAVE_FORMAT_1M08       = $00000001;       { 11.025 kHz, Mono,   8-bit }
  225.   WAVE_FORMAT_1S08       = $00000002;       { 11.025 kHz, Stereo, 8-bit }
  226.   WAVE_FORMAT_1M16       = $00000004;       { 11.025 kHz, Mono,   16-bit }
  227.   WAVE_FORMAT_1S16       = $00000008;       { 11.025 kHz, Stereo, 16-bit }
  228.   WAVE_FORMAT_2M08       = $00000010;       { 22.05  kHz, Mono,   8-bit }
  229.   WAVE_FORMAT_2S08       = $00000020;       { 22.05  kHz, Stereo, 8-bit }
  230.   WAVE_FORMAT_2M16       = $00000040;       { 22.05  kHz, Mono,   16-bit }
  231.   WAVE_FORMAT_2S16       = $00000080;       { 22.05  kHz, Stereo, 16-bit }
  232.   WAVE_FORMAT_4M08       = $00000100;       { 44.1   kHz, Mono,   8-bit }
  233.   WAVE_FORMAT_4S08       = $00000200;       { 44.1   kHz, Stereo, 8-bit }
  234.   WAVE_FORMAT_4M16       = $00000400;       { 44.1   kHz, Mono,   16-bit }
  235.   WAVE_FORMAT_4S16       = $00000800;       { 44.1   kHz, Stereo, 16-bit }
  236.  
  237. { flags for wFormatTag field of WAVEFORMAT          }
  238.   WAVE_FORMAT_PCM   =  1;
  239.  
  240. { MIDI error return values                }
  241.   MIDIERR_UNPREPARED    =(MIDIERR_BASE + 0);   { header not prepared  }
  242.   MIDIERR_STILLPLAYING  =(MIDIERR_BASE + 1);   { still something playing }
  243.   MIDIERR_NOMAP         =(MIDIERR_BASE + 2);   { no current map    }
  244.   MIDIERR_NOTREADY      =(MIDIERR_BASE + 3);   { hardware is still busy }
  245.   MIDIERR_NODEVICE      =(MIDIERR_BASE + 4);   { port no longer connected }
  246.   MIDIERR_LASTERROR     =(MIDIERR_BASE + 4);   { last error in range  }
  247.  
  248. { MIDI callback messages                }
  249.   MIM_OPEN        = MM_MIM_OPEN;
  250.   MIM_CLOSE       = MM_MIM_CLOSE;
  251.   MIM_DATA        = MM_MIM_DATA;
  252.   MIM_LONGDATA    = MM_MIM_LONGDATA;
  253.   MIM_ERROR       = MM_MIM_ERROR;
  254.   MIM_LONGERROR   = MM_MIM_LONGERROR;
  255.   MOM_OPEN        = MM_MOM_OPEN;
  256.   MOM_CLOSE       = MM_MOM_CLOSE;
  257.   MOM_DONE        = MM_MOM_DONE;
  258.  
  259. { device ID for MIDI mapper               }
  260.   MIDIMAPPER   =  (-1);
  261.  
  262.   MOD_MIDIPORT   = 1;  { output port             }
  263.   MOD_SYNTH      = 2;  { generic internal synth         }
  264.   MOD_SQSYNTH    = 3;  { square wave internal synth        }
  265.   MOD_FMSYNTH    = 4;  { FM internal synth           }
  266.   MOD_MAPPER     = 5;  { MIDI mapper             }
  267.                           
  268. { flags for dwSupport field of MIDIOUTCAPS structure       }
  269.   MIDICAPS_VOLUME          = $0001;  { supports volume control    }
  270.   MIDICAPS_LRVOLUME        = $0002;  { separate left-right volume control}
  271.  
  272. { flags for dwFlags field of MIDIHDR structure         }
  273.   MHDR_DONE       = $00000001;       { done bit         }
  274.   MHDR_PREPARED   = $00000002;       { set if header prepared    }
  275.   MHDR_INQUEUE    = $00000004;       { reserved for driver     }
  276.                               
  277. { flags for wTechnology field in AUXCAPS structure        }
  278.   AUXCAPS_CDAUDIO  =  1;       { audio from internal CD-ROM drive   }
  279.   AUXCAPS_AUXIN    =  2;       { audio from auxiliary input jacks   }
  280.                         
  281. { flags for dwSupport field in AUXCAPS structure        }
  282.   AUXCAPS_VOLUME          = $0001;  { supports volume control    }
  283.   AUXCAPS_LRVOLUME        = $0002;  { separate left-right volume control }
  284.  
  285. { timer error return values               }
  286.   TIMERR_NOERROR    =    (0);                  { no error      }
  287.   TIMERR_NOCANDO    =    (TIMERR_BASE+1);      { request not completed  }
  288.   TIMERR_STRUCT     =    (TIMERR_BASE+33);     { time struct size   }
  289.  
  290. { flags for wFlags parameter of timeSetEvent() function      }
  291.   TIME_ONESHOT   = 0;   { program timer for single event      }
  292.   TIME_PERIODIC  = 1;   { program for continuous periodic event    }
  293.                         
  294. { joystick error return values              }
  295.   JOYERR_NOERROR    =    (0);                  { no error      }
  296.   JOYERR_PARMS      =    (JOYERR_BASE+5);      { bad parameters    }
  297.   JOYERR_NOCANDO    =    (JOYERR_BASE+6);      { request not completed  }
  298.   JOYERR_UNPLUGGED  =    (JOYERR_BASE+7);      { joystick is unplugged  }
  299.  
  300. { constants used with JOYINFO structure and MM_JOY* messages    }
  301.   JOY_BUTTON1         = $0001;
  302.   JOY_BUTTON2         = $0002;
  303.   JOY_BUTTON3         = $0004;
  304.   JOY_BUTTON4         = $0008;
  305.   JOY_BUTTON1CHG      = $0100;
  306.   JOY_BUTTON2CHG      = $0200;
  307.   JOY_BUTTON3CHG      = $0400;
  308.   JOY_BUTTON4CHG      = $0800;
  309.  
  310. { joystick ID constants                 }
  311.   JOYSTICKID1      =   0;
  312.   JOYSTICKID2      =   1;
  313.  
  314. { MMIO error return values                }
  315.   MMIOERR_BASE      =      256;
  316.   MMIOERR_FILENOTFOUND  =  (MMIOERR_BASE + 1);  { file not found    }
  317.   MMIOERR_OUTOFMEMORY   =  (MMIOERR_BASE + 2);  { out of memory    }
  318.   MMIOERR_CANNOTOPEN    =  (MMIOERR_BASE + 3);  { cannot open     }
  319.   MMIOERR_CANNOTCLOSE   =  (MMIOERR_BASE + 4);  { cannot close    }
  320.   MMIOERR_CANNOTREAD    =  (MMIOERR_BASE + 5);  { cannot read     }
  321.   MMIOERR_CANNOTWRITE   =  (MMIOERR_BASE + 6);  { cannot write    }
  322.   MMIOERR_CANNOTSEEK    =  (MMIOERR_BASE + 7);  { cannot seek     }
  323.   MMIOERR_CANNOTEXPAND  =  (MMIOERR_BASE + 8);  { cannot expand file  }
  324.   MMIOERR_CHUNKNOTFOUND =  (MMIOERR_BASE + 9);  { chunk not found   }
  325.   MMIOERR_UNBUFFERED    =  (MMIOERR_BASE + 10); { file is unbuffered  }
  326.                         
  327. { MMIO constants                   }
  328.   CFSEPCHAR    =   '+';             { compound file name separator char. }
  329.  
  330. { bit field masks                   }
  331.   MMIO_RWMODE     = $00000003;      { open file for reading/writing/both }
  332.   MMIO_SHAREMODE  = $00000070;      { file sharing mode number    }
  333.  
  334. { constants for dwFlags field of MMIOINFO           }
  335.   MMIO_CREATE     = $00001000;      { create new file (or truncate file) }
  336.   MMIO_DELETE     = $00000200;      { create new file (or truncate file) }
  337.   MMIO_ALLOCBUF   = $00010000;      { mmioOpen() should allocate a buffer}
  338.  
  339.   MMIO_DIRTY      = $10000000;      { I/O buffer is dirty      }
  340.  
  341. { read/write mode numbers (bit field MMIO_RWMODE)        }
  342.   MMIO_READ       = $00000000;      { open file for reading only   }
  343.   MMIO_WRITE      = $00000001;      { open file for writing only   }
  344.   MMIO_READWRITE  = $00000002;      { open file for reading and writing }
  345.  
  346. { share mode numbers (bit field MMIO_SHAREMODE)         }
  347.   MMIO_COMPAT     = $00000000;      { compatibility mode      }
  348.   MMIO_EXCLUSIVE  = $00000010;      { exclusive-access mode     }
  349.   MMIO_DENYWRITE  = $00000020;      { deny writing to other processes  }
  350.   MMIO_DENYREAD   = $00000030;      { deny reading to other processes  }
  351.   MMIO_DENYNONE   = $00000040;      { deny nothing to other processes  }
  352.                         
  353. { various MMIO flags                  }
  354.   MMIO_FHOPEN             = $0010;  { mmioClose: keep file handle open }
  355.   MMIO_EMPTYBUF           = $0010;  { mmioFlush: empty the I/O buffer  }
  356.   MMIO_TOUPPER            = $0010;  { mmioStringToFOURCC: to u-case  }
  357.   MMIO_INSTALLPROC    = $00010000;  { mmioInstallIOProc: install MMIOProc}
  358.   MMIO_REMOVEPROC     = $00020000;  { mmioInstallIOProc: remove MMIOProc }
  359.   MMIO_FINDPROC       = $00040000;  { mmioInstallIOProc: find an MMIOProc}
  360.   MMIO_FINDCHUNK          = $0010;  { mmioDescend: find a chunk by ID  }
  361.   MMIO_FINDRIFF           = $0020;  { mmioDescend: find a LIST chunk  }
  362.   MMIO_FINDLIST           = $0040;  { mmioDescend: find a RIFF chunk  }
  363.   MMIO_CREATERIFF         = $0020;  { mmioCreateChunk: make a LIST chunk }
  364.   MMIO_CREATELIST         = $0040;  { mmioCreateChunk: make a RIFF chunk }
  365.  
  366. { message numbers for MMIOPROC I/O procedure functions      }
  367.   MMIOM_READ    =  MMIO_READ;       { read           }
  368.   MMIOM_WRITE   = MMIO_WRITE;       { write           }
  369.   MMIOM_SEEK    =          2;       { seek to a new position in file  }
  370.   MMIOM_OPEN    =          3;       { open file         }
  371.   MMIOM_CLOSE   =          4;       { close file         }
  372.   MMIOM_WRITEFLUSH     =   5;       { write and flush       }
  373.   MMIOM_USER         = $8000;       { beginning of user-defined messages }
  374.  
  375. { flags for mmioSeek()                 }
  376.   SEEK_SET     =   0;               { seek to an absolute position   }
  377.   SEEK_CUR     =   1;               { seek relative to current position }
  378.   SEEK_END     =   2;               { seek relative to end of file   }
  379.                           
  380. { other constants                   }
  381.   MMIO_DEFAULTBUFFER   =   8192;    { default buffer size      }
  382.  
  383. { MCI error return values                }
  384.   MCIERR_INVALID_DEVICE_ID      =  (MCIERR_BASE + 1);
  385.   MCIERR_UNRECOGNIZED_KEYWORD   =  (MCIERR_BASE + 3);
  386.   MCIERR_UNRECOGNIZED_COMMAND   =  (MCIERR_BASE + 5);
  387.   MCIERR_HARDWARE               =  (MCIERR_BASE + 6);
  388.   MCIERR_INVALID_DEVICE_NAME    =  (MCIERR_BASE + 7);
  389.   MCIERR_OUT_OF_MEMORY          =  (MCIERR_BASE + 8);
  390.   MCIERR_DEVICE_OPEN            =  (MCIERR_BASE + 9);
  391.   MCIERR_CANNOT_LOAD_DRIVER     =  (MCIERR_BASE + 10);
  392.   MCIERR_MISSING_COMMAND_STRING =  (MCIERR_BASE + 11);
  393.   MCIERR_PARAM_OVERFLOW         =  (MCIERR_BASE + 12);
  394.   MCIERR_MISSING_STRING_ARGUMENT=  (MCIERR_BASE + 13);
  395.   MCIERR_BAD_INTEGER            =  (MCIERR_BASE + 14);
  396.   MCIERR_PARSER_INTERNAL        =  (MCIERR_BASE + 15);
  397.   MCIERR_DRIVER_INTERNAL        =  (MCIERR_BASE + 16);
  398.   MCIERR_MISSING_PARAMETER      =  (MCIERR_BASE + 17);
  399.   MCIERR_UNSUPPORTED_FUNCTION   =  (MCIERR_BASE + 18);
  400.   MCIERR_FILE_NOT_FOUND         =  (MCIERR_BASE + 19);
  401.   MCIERR_DEVICE_NOT_READY       =  (MCIERR_BASE + 20);
  402.   MCIERR_INTERNAL               =  (MCIERR_BASE + 21);
  403.   MCIERR_DRIVER                 =  (MCIERR_BASE + 22);
  404.   MCIERR_CANNOT_USE_ALL         =  (MCIERR_BASE + 23);
  405.   MCIERR_MULTIPLE               =  (MCIERR_BASE + 24);
  406.   MCIERR_EXTENSION_NOT_FOUND    =  (MCIERR_BASE + 25);
  407.   MCIERR_OUTOFRANGE             =  (MCIERR_BASE + 26);
  408.   MCIERR_FLAGS_NOT_COMPATIBLE   =  (MCIERR_BASE + 28);
  409.   MCIERR_FILE_NOT_SAVED         =  (MCIERR_BASE + 30);
  410.   MCIERR_DEVICE_TYPE_REQUIRED   =  (MCIERR_BASE + 31);
  411.   MCIERR_DEVICE_LOCKED          =  (MCIERR_BASE + 32);
  412.   MCIERR_DUPLICATE_ALIAS        =  (MCIERR_BASE + 33);
  413.   MCIERR_BAD_CONSTANT           =  (MCIERR_BASE + 34);
  414.   MCIERR_MUST_USE_SHAREABLE     =  (MCIERR_BASE + 35);
  415.   MCIERR_MISSING_DEVICE_NAME    =  (MCIERR_BASE + 36);
  416.   MCIERR_BAD_TIME_FORMAT        =  (MCIERR_BASE + 37);
  417.   MCIERR_NO_CLOSING_QUOTE       =  (MCIERR_BASE + 38);
  418.   MCIERR_DUPLICATE_FLAGS        =  (MCIERR_BASE + 39);
  419.   MCIERR_INVALID_FILE           =  (MCIERR_BASE + 40);
  420.   MCIERR_NULL_PARAMETER_BLOCK   =  (MCIERR_BASE + 41);
  421.   MCIERR_UNNAMED_RESOURCE       =  (MCIERR_BASE + 42);
  422.   MCIERR_NEW_REQUIRES_ALIAS     =  (MCIERR_BASE + 43);
  423.   MCIERR_NOTIFY_ON_AUTO_OPEN    =  (MCIERR_BASE + 44);
  424.   MCIERR_NO_ELEMENT_ALLOWED     =  (MCIERR_BASE + 45);
  425.   MCIERR_NONAPPLICABLE_FUNCTION =  (MCIERR_BASE + 46);
  426.   MCIERR_ILLEGAL_FOR_AUTO_OPEN  =  (MCIERR_BASE + 47);
  427.   MCIERR_FILENAME_REQUIRED      =  (MCIERR_BASE + 48);
  428.   MCIERR_EXTRA_CHARACTERS       =  (MCIERR_BASE + 49);
  429.  
  430.   MCIERR_WAVE_OUTPUTSINUSE      =  (MCIERR_BASE + 64);
  431.   MCIERR_WAVE_SETOUTPUTINUSE    =  (MCIERR_BASE + 65);
  432.   MCIERR_WAVE_INPUTSINUSE       =  (MCIERR_BASE + 66);
  433.   MCIERR_WAVE_SETINPUTINUSE     =  (MCIERR_BASE + 67);
  434.   MCIERR_WAVE_OUTPUTUNSPECIFIED =  (MCIERR_BASE + 68);
  435.   MCIERR_WAVE_INPUTUNSPECIFIED  =  (MCIERR_BASE + 69);
  436.   MCIERR_WAVE_OUTPUTSUNSUITABLE =  (MCIERR_BASE + 70);
  437.   MCIERR_WAVE_SETOUTPUTUNSUITABLE = (MCIERR_BASE + 71);
  438.   MCIERR_WAVE_INPUTSUNSUITABLE  =  (MCIERR_BASE + 72);
  439.   MCIERR_WAVE_SETINPUTUNSUITABLE =  (MCIERR_BASE + 73);
  440.  
  441.   MCIERR_SEQ_DIV_INCOMPATIBLE   =  (MCIERR_BASE + 80);
  442.   MCIERR_SEQ_PORT_INUSE         =  (MCIERR_BASE + 81);
  443.   MCIERR_SEQ_PORT_NONEXISTENT   =  (MCIERR_BASE + 82);
  444.   MCIERR_SEQ_PORT_MAPNODEVICE   =  (MCIERR_BASE + 83);
  445.   MCIERR_SEQ_PORT_MISCERROR     =  (MCIERR_BASE + 84);
  446.   MCIERR_SEQ_TIMER              =  (MCIERR_BASE + 85);
  447.   MCIERR_SEQ_PORTUNSPECIFIED    =  (MCIERR_BASE + 86);
  448.  
  449.   MCIERR_NO_WINDOW              =  (MCIERR_BASE + 90);
  450.   MCIERR_CREATEWINDOW           =  (MCIERR_BASE + 91);
  451.   MCIERR_FILE_READ              =  (MCIERR_BASE + 92);
  452.   MCIERR_FILE_WRITE             =  (MCIERR_BASE + 93);
  453.             
  454. { all custom device driver errors must be >= than this value     }
  455.   MCIERR_CUSTOM_DRIVER_BASE     =  (MCIERR_BASE + 256);
  456.  
  457. { MCI command message identifiers              }
  458.   MCI_OPEN                        = $0803;
  459.   MCI_CLOSE                       = $0804;
  460.   MCI_ESCAPE                      = $0805;
  461.   MCI_PLAY                        = $0806;
  462.   MCI_SEEK                        = $0807;
  463.   MCI_STOP                        = $0808;
  464.   MCI_PAUSE                       = $0809;
  465.   MCI_INFO                        = $080A;
  466.   MCI_GETDEVCAPS                  = $080B;
  467.   MCI_SPIN                        = $080C;
  468.   MCI_SET                         = $080D;
  469.   MCI_STEP                        = $080E;
  470.   MCI_RECORD                      = $080F;
  471.   MCI_SYSINFO                     = $0810;
  472.   MCI_BREAK                       = $0811;
  473.   MCI_SOUND                       = $0812;
  474.   MCI_SAVE                        = $0813;
  475.   MCI_STATUS                      = $0814;
  476.   MCI_CUE                         = $0830;
  477.   MCI_REALIZE                     = $0840;
  478.   MCI_WINDOW                      = $0841;
  479.   MCI_PUT                         = $0842;
  480.   MCI_WHERE                       = $0843;
  481.   MCI_FREEZE                      = $0844;
  482.   MCI_UNFREEZE                    = $0845;
  483.   MCI_LOAD                        = $0850;
  484.   MCI_CUT                         = $0851;
  485.   MCI_COPY                        = $0852;
  486.   MCI_PASTE                       = $0853;
  487.   MCI_UPDATE                      = $0854;
  488.   MCI_RESUME                      = $0855;
  489.   MCI_DELETE                      = $0856;
  490.                                                       
  491. { all custom MCI command messages must be >= than this value     }
  492.   MCI_USER_MESSAGES            =   ($0400 + DRV_MCI_FIRST);
  493.  
  494.  
  495. { device ID for "all devices"                }
  496.   MCI_ALL_DEVICE_ID               = $FFFF;
  497.  
  498. { constants for predefined MCI device types           }
  499.   MCI_DEVTYPE_VCR                = (MCI_STRING_OFFSET + 1);
  500.   MCI_DEVTYPE_VIDEODISC          = (MCI_STRING_OFFSET + 2);
  501.   MCI_DEVTYPE_OVERLAY            = (MCI_STRING_OFFSET + 3);
  502.   MCI_DEVTYPE_CD_AUDIO           = (MCI_STRING_OFFSET + 4);
  503.   MCI_DEVTYPE_DAT                = (MCI_STRING_OFFSET + 5);
  504.   MCI_DEVTYPE_SCANNER            = (MCI_STRING_OFFSET + 6);
  505.   MCI_DEVTYPE_ANIMATION          = (MCI_STRING_OFFSET + 7);
  506.   MCI_DEVTYPE_DIGITAL_VIDEO      = (MCI_STRING_OFFSET + 8);
  507.   MCI_DEVTYPE_OTHER              = (MCI_STRING_OFFSET + 9);
  508.   MCI_DEVTYPE_WAVEFORM_AUDIO     = (MCI_STRING_OFFSET + 10);
  509.   MCI_DEVTYPE_SEQUENCER          = (MCI_STRING_OFFSET + 11);
  510.                                                                              
  511.   MCI_DEVTYPE_FIRST              = MCI_DEVTYPE_VCR;
  512.   MCI_DEVTYPE_LAST               = MCI_DEVTYPE_SEQUENCER;
  513.  
  514. { return values for 'status mode' command            }
  515.   MCI_MODE_NOT_READY             = (MCI_STRING_OFFSET + 12);
  516.   MCI_MODE_STOP                  = (MCI_STRING_OFFSET + 13);
  517.   MCI_MODE_PLAY                  = (MCI_STRING_OFFSET + 14);
  518.   MCI_MODE_RECORD                = (MCI_STRING_OFFSET + 15);
  519.   MCI_MODE_SEEK                  = (MCI_STRING_OFFSET + 16);
  520.   MCI_MODE_PAUSE                 = (MCI_STRING_OFFSET + 17);
  521.   MCI_MODE_OPEN                  = (MCI_STRING_OFFSET + 18);
  522.                                                                              
  523. { constants used in 'set time format' and 'status time format' commands}
  524.   MCI_FORMAT_MILLISECONDS        = 0;
  525.   MCI_FORMAT_HMS                 = 1;
  526.   MCI_FORMAT_MSF                 = 2;
  527.   MCI_FORMAT_FRAMES              = 3;
  528.   MCI_FORMAT_SMPTE_24            = 4;
  529.   MCI_FORMAT_SMPTE_25            = 5;
  530.   MCI_FORMAT_SMPTE_30            = 6;
  531.   MCI_FORMAT_SMPTE_30DROP        = 7;
  532.   MCI_FORMAT_BYTES               = 8;
  533.   MCI_FORMAT_SAMPLES             = 9;
  534.   MCI_FORMAT_TMSF                = 10;
  535.            
  536. { flags for wParam of MM_MCINOTIFY message           }
  537.   MCI_NOTIFY_SUCCESSFUL           = $0001;
  538.   MCI_NOTIFY_SUPERSEDED           = $0002;
  539.   MCI_NOTIFY_ABORTED              = $0004;
  540.   MCI_NOTIFY_FAILURE              = $0008;
  541.                                                       
  542.  
  543. { common flags for dwFlags parameter of MCI command messages     }
  544.   MCI_NOTIFY                      = $00000001;
  545.   MCI_WAIT                        = $00000002;
  546.   MCI_FROM                        = $00000004;
  547.   MCI_TO                          = $00000008;
  548.   MCI_TRACK                       = $00000010;
  549.  
  550. { flags for dwFlags parameter of MCI_OPEN command message      }
  551.   MCI_OPEN_SHAREABLE              = $00000100;
  552.   MCI_OPEN_ELEMENT                = $00000200;
  553.   MCI_OPEN_ALIAS                  = $00000400;
  554.   MCI_OPEN_ELEMENT_ID             = $00000800;
  555.   MCI_OPEN_TYPE_ID                = $00001000;
  556.   MCI_OPEN_TYPE                   = $00002000;
  557.  
  558. { flags for dwFlags parameter of MCI_SEEK command message      }
  559.   MCI_SEEK_TO_START               = $00000100;
  560.   MCI_SEEK_TO_END                 = $00000200;
  561.  
  562. { flags for dwFlags parameter of MCI_STATUS command message      }
  563.   MCI_STATUS_ITEM                 = $00000100;
  564.   MCI_STATUS_START                = $00000200;
  565.  
  566. { flags for dwItem field of the MCI_STATUS_PARMS parameter block    }
  567.   MCI_STATUS_LENGTH               = $00000001;
  568.   MCI_STATUS_POSITION             = $00000002;
  569.   MCI_STATUS_NUMBER_OF_TRACKS     = $00000003;
  570.   MCI_STATUS_MODE                 = $00000004;
  571.   MCI_STATUS_MEDIA_PRESENT        = $00000005;
  572.   MCI_STATUS_TIME_FORMAT          = $00000006;
  573.   MCI_STATUS_READY                = $00000007;
  574.   MCI_STATUS_CURRENT_TRACK        = $00000008;
  575.                                                             
  576. { flags for dwFlags parameter of MCI_INFO command message      }
  577.   MCI_INFO_PRODUCT                = $00000100;
  578.   MCI_INFO_FILE                   = $00000200;
  579.  
  580. { flags for dwFlags parameter of MCI_GETDEVCAPS command message    }
  581.   MCI_GETDEVCAPS_ITEM             = $00000100;
  582.  
  583. { flags for dwItem field of the MCI_GETDEVCAPS_PARMS parameter block   }
  584.   MCI_GETDEVCAPS_CAN_RECORD       = $00000001;
  585.   MCI_GETDEVCAPS_HAS_AUDIO        = $00000002;
  586.   MCI_GETDEVCAPS_HAS_VIDEO        = $00000003;
  587.   MCI_GETDEVCAPS_DEVICE_TYPE      = $00000004;
  588.   MCI_GETDEVCAPS_USES_FILES       = $00000005;
  589.   MCI_GETDEVCAPS_COMPOUND_DEVICE  = $00000006;
  590.   MCI_GETDEVCAPS_CAN_EJECT        = $00000007;
  591.   MCI_GETDEVCAPS_CAN_PLAY         = $00000008;
  592.   MCI_GETDEVCAPS_CAN_SAVE         = $00000009;
  593.  
  594. { flags for dwFlags parameter of MCI_SYSINFO command message     }
  595.   MCI_SYSINFO_QUANTITY            = $00000100;
  596.   MCI_SYSINFO_OPEN                = $00000200;
  597.   MCI_SYSINFO_NAME                = $00000400;
  598.   MCI_SYSINFO_INSTALLNAME         = $00000800;
  599.  
  600. { flags for dwFlags parameter of MCI_SET command message       }
  601.   MCI_SET_DOOR_OPEN               = $00000100;
  602.   MCI_SET_DOOR_CLOSED             = $00000200;
  603.   MCI_SET_TIME_FORMAT             = $00000400;
  604.   MCI_SET_AUDIO                   = $00000800;
  605.   MCI_SET_VIDEO                   = $00001000;
  606.   MCI_SET_ON                      = $00002000;
  607.   MCI_SET_OFF                     = $00004000;
  608.                                                             
  609. { flags for dwAudio field of MCI_SET_PARMS or MCI_SEQ_SET_PARMS    }
  610.   MCI_SET_AUDIO_ALL               = $00000000;
  611.   MCI_SET_AUDIO_LEFT              = $00000001;
  612.   MCI_SET_AUDIO_RIGHT             = $00000002;
  613.                                                             
  614. { flags for dwFlags parameter of MCI_BREAK command message      }
  615.   MCI_BREAK_KEY                   = $00000100;
  616.   MCI_BREAK_HWND                  = $00000200;
  617.   MCI_BREAK_OFF                   = $00000400;
  618.  
  619. { flags for dwFlags parameter of MCI_RECORD command message      }
  620.   MCI_RECORD_INSERT               = $00000100;
  621.   MCI_RECORD_OVERWRITE            = $00000200;
  622.  
  623. { flags for dwFlags parameter of MCI_SOUND command message      }
  624.   MCI_SOUND_NAME                  = $00000100;
  625.  
  626. { flags for dwFlags parameter of MCI_SAVE command message      }
  627.   MCI_SAVE_FILE                   = $00000100;
  628.                
  629. { flags for dwFlags parameter of MCI_LOAD command message      }
  630.   MCI_LOAD_FILE                   = $00000100;
  631.  
  632. { flag for dwReturn field of MCI_STATUS_PARMS          }
  633. { MCI_STATUS command, (dwItem == MCI_STATUS_MODE)         }
  634.   MCI_VD_MODE_PARK             =   (MCI_VD_OFFSET + 1);
  635.  
  636. { flag for dwReturn field of MCI_STATUS_PARMS          }
  637. { MCI_STATUS command, (dwItem == MCI_VD_STATUS_MEDIA_TYPE)      }
  638.   MCI_VD_MEDIA_CLV             =   (MCI_VD_OFFSET + 2);
  639.   MCI_VD_MEDIA_CAV             =   (MCI_VD_OFFSET + 3);
  640.   MCI_VD_MEDIA_OTHER           =   (MCI_VD_OFFSET + 4);
  641.            
  642.   MCI_VD_FORMAT_TRACK             = $4001;
  643.  
  644. { flags for dwFlags parameter of MCI_PLAY command message      }
  645.   MCI_VD_PLAY_REVERSE             = $00010000;
  646.   MCI_VD_PLAY_FAST                = $00020000;
  647.   MCI_VD_PLAY_SPEED               = $00040000;
  648.   MCI_VD_PLAY_SCAN                = $00080000;
  649.   MCI_VD_PLAY_SLOW                = $00100000;
  650.  
  651. { flag for dwFlags parameter of MCI_SEEK command message       }
  652.   MCI_VD_SEEK_REVERSE             = $00010000;
  653.  
  654. { flags for dwItem field of MCI_STATUS_PARMS parameter block     }
  655.   MCI_VD_STATUS_SPEED             = $00004002;
  656.   MCI_VD_STATUS_FORWARD           = $00004003;
  657.   MCI_VD_STATUS_MEDIA_TYPE        = $00004004;
  658.   MCI_VD_STATUS_SIDE              = $00004005;
  659.   MCI_VD_STATUS_DISC_SIZE         = $00004006;
  660.                
  661. { flags for dwFlags parameter of MCI_GETDEVCAPS command message    }
  662.   MCI_VD_GETDEVCAPS_CLV           = $00010000;
  663.   MCI_VD_GETDEVCAPS_CAV           = $00020000;
  664.  
  665.   MCI_VD_SPIN_UP                  = $00010000;
  666.   MCI_VD_SPIN_DOWN                = $00020000;
  667.  
  668. { flags for dwItem field of MCI_GETDEVCAPS_PARMS parameter block    }
  669.   MCI_VD_GETDEVCAPS_CAN_REVERSE   = $00004002;
  670.   MCI_VD_GETDEVCAPS_FAST_RATE     = $00004003;
  671.   MCI_VD_GETDEVCAPS_SLOW_RATE     = $00004004;
  672.   MCI_VD_GETDEVCAPS_NORMAL_RATE   = $00004005;
  673.                
  674. { flags for the dwFlags parameter of MCI_STEP command message     }
  675.   MCI_VD_STEP_FRAMES              = $00010000;
  676.   MCI_VD_STEP_REVERSE             = $00020000;
  677.                
  678. { flag for the MCI_ESCAPE command message            }
  679.   MCI_VD_ESCAPE_STRING            = $00000100;
  680.  
  681. { flags for the dwFlags parameter of MCI_OPEN command message     }
  682.   MCI_WAVE_OPEN_BUFFER            = $00010000;
  683.  
  684. { flags for the dwFlags parameter of MCI_SET command message     }
  685.   MCI_WAVE_SET_FORMATTAG          = $00010000;
  686.   MCI_WAVE_SET_CHANNELS           = $00020000;
  687.   MCI_WAVE_SET_SAMPLESPERSEC      = $00040000;
  688.   MCI_WAVE_SET_AVGBYTESPERSEC     = $00080000;
  689.   MCI_WAVE_SET_BLOCKALIGN         = $00100000;
  690.   MCI_WAVE_SET_BITSPERSAMPLE      = $00200000;
  691.                                                             
  692. { flags for the dwFlags parameter of MCI_STATUS, MCI_SET command messages}
  693.   MCI_WAVE_INPUT                  = $00400000;
  694.   MCI_WAVE_OUTPUT                 = $00800000;
  695.  
  696. { flags for the dwItem field of MCI_STATUS_PARMS parameter block    }
  697.   MCI_WAVE_STATUS_FORMATTAG       = $00004001;
  698.   MCI_WAVE_STATUS_CHANNELS        = $00004002;
  699.   MCI_WAVE_STATUS_SAMPLESPERSEC   = $00004003;
  700.   MCI_WAVE_STATUS_AVGBYTESPERSEC  = $00004004;
  701.   MCI_WAVE_STATUS_BLOCKALIGN      = $00004005;
  702.   MCI_WAVE_STATUS_BITSPERSAMPLE   = $00004006;
  703.   MCI_WAVE_STATUS_LEVEL           = $00004007;
  704.  
  705. { flags for the dwFlags parameter of MCI_SET command message     }
  706.   MCI_WAVE_SET_ANYINPUT           = $04000000;
  707.   MCI_WAVE_SET_ANYOUTPUT          = $08000000;
  708.                                                             
  709. { flags for the dwFlags parameter of MCI_GETDEVCAPS command message   }
  710.   MCI_WAVE_GETDEVCAPS_INPUTS      = $00004001;
  711.   MCI_WAVE_GETDEVCAPS_OUTPUTS     = $00004002;
  712.  
  713. {                         }
  714. { MCI extensions for MIDI sequencer devices           }
  715. {                         }
  716.  
  717. { flags for the dwReturn field of MCI_STATUS_PARMS parameter block   }
  718. { MCI_STATUS command, (dwItem == MCI_SEQ_STATUS_DIVTYPE)       }
  719.       MCI_SEQ_DIV_PPQN           = (0 + MCI_SEQ_OFFSET);
  720.       MCI_SEQ_DIV_SMPTE_24       = (1 + MCI_SEQ_OFFSET);
  721.       MCI_SEQ_DIV_SMPTE_25       = (2 + MCI_SEQ_OFFSET);
  722.       MCI_SEQ_DIV_SMPTE_30DROP   = (3 + MCI_SEQ_OFFSET);
  723.       MCI_SEQ_DIV_SMPTE_30       = (4 + MCI_SEQ_OFFSET);
  724.  
  725. { flags for the dwMaster field of MCI_SEQ_SET_PARMS parameter block   }
  726. { MCI_SET command, (dwFlags == MCI_SEQ_SET_MASTER)         }
  727.       MCI_SEQ_FORMAT_SONGPTR      = $4001;
  728.       MCI_SEQ_FILE                = $4002;
  729.       MCI_SEQ_MIDI                = $4003;
  730.       MCI_SEQ_SMPTE               = $4004;
  731.       MCI_SEQ_NONE               = 65533;
  732.  
  733. { flags for the dwItem field of MCI_STATUS_PARMS parameter block    }
  734.   MCI_SEQ_STATUS_TEMPO            = $00004002;
  735.   MCI_SEQ_STATUS_PORT             = $00004000;
  736.   MCI_SEQ_STATUS_SLAVE            = $00004007;
  737.   MCI_SEQ_STATUS_MASTER           = $00004008;
  738.   MCI_SEQ_STATUS_OFFSET           = $00004009;
  739.   MCI_SEQ_STATUS_DIVTYPE          = $0000400A;
  740.                
  741. { flags for the dwFlags parameter of MCI_SET command message     }
  742.   MCI_SEQ_SET_TEMPO               = $00010000;
  743.   MCI_SEQ_SET_PORT                = $00020000;
  744.   MCI_SEQ_SET_SLAVE               = $00040000;
  745.   MCI_SEQ_SET_MASTER              = $00080000;
  746.   MCI_SEQ_SET_OFFSET              = $01000000;
  747.  
  748. {                         }
  749. { MCI extensions for animation devices             }
  750. {                         }
  751.  
  752. { flags for dwFlags parameter of MCI_OPEN command message      }
  753.   MCI_ANIM_OPEN_WS                = $00010000;
  754.   MCI_ANIM_OPEN_PARENT            = $00020000;
  755.   MCI_ANIM_OPEN_NOSTATIC          = $00040000;
  756.                                                             
  757. { flags for dwFlags parameter of MCI_PLAY command message      }
  758.   MCI_ANIM_PLAY_SPEED             = $00010000;
  759.   MCI_ANIM_PLAY_REVERSE           = $00020000;
  760.   MCI_ANIM_PLAY_FAST              = $00040000;
  761.   MCI_ANIM_PLAY_SLOW              = $00080000;
  762.   MCI_ANIM_PLAY_SCAN              = $00100000;
  763.  
  764. { flags for dwFlags parameter of MCI_STEP command message      }
  765.   MCI_ANIM_STEP_REVERSE           = $00010000;
  766.   MCI_ANIM_STEP_FRAMES            = $00020000;
  767.  
  768. { flags for dwItem field of MCI_STATUS_PARMS parameter block     }
  769.   MCI_ANIM_STATUS_SPEED           = $00004001;
  770.   MCI_ANIM_STATUS_FORWARD         = $00004002;
  771.   MCI_ANIM_STATUS_HWND            = $00004003;
  772.   MCI_ANIM_STATUS_HPAL            = $00004004;
  773.   MCI_ANIM_STATUS_STRETCH         = $00004005;
  774.  
  775. { flags for the dwFlags parameter of MCI_INFO command message     }
  776.   MCI_ANIM_INFO_TEXT              = $00010000;
  777.  
  778. { flags for dwItem field of MCI_GETDEVCAPS_PARMS parameter block    }
  779.   MCI_ANIM_GETDEVCAPS_CAN_REVERSE = $00004001;
  780.   MCI_ANIM_GETDEVCAPS_FAST_RATE   = $00004002;
  781.   MCI_ANIM_GETDEVCAPS_SLOW_RATE   = $00004003;
  782.   MCI_ANIM_GETDEVCAPS_NORMAL_RATE = $00004004;
  783.   MCI_ANIM_GETDEVCAPS_PALETTES    = $00004006;
  784.   MCI_ANIM_GETDEVCAPS_CAN_STRETCH = $00004007;
  785.   MCI_ANIM_GETDEVCAPS_MAX_WINDOWS = $00004008;
  786.                                                             
  787. { flags for the MCI_REALIZE command message           }
  788.   MCI_ANIM_REALIZE_NORM           = $00010000;
  789.   MCI_ANIM_REALIZE_BKGD           = $00020000;
  790.  
  791. { flags for dwFlags parameter of MCI_WINDOW command message      }
  792.   MCI_ANIM_WINDOW_HWND            = $00010000;
  793.   MCI_ANIM_WINDOW_STATE           = $00040000;
  794.   MCI_ANIM_WINDOW_TEXT            = $00080000;
  795.   MCI_ANIM_WINDOW_ENABLE_STRETCH  = $00100000;
  796.   MCI_ANIM_WINDOW_DISABLE_STRETCH = $00200000;
  797.  
  798. { flags for hWnd field of MCI_ANIM_WINDOW_PARMS parameter block    }
  799. { MCI_WINDOW command message, (dwFlags == MCI_ANIM_WINDOW_HWND)    }
  800.   MCI_ANIM_WINDOW_DEFAULT         = $00000000;
  801.  
  802. { flags for dwFlags parameter of MCI_PUT command message       }
  803.   MCI_ANIM_RECT                   = $00010000;
  804.   MCI_ANIM_PUT_SOURCE             = $00020000;
  805.   MCI_ANIM_PUT_DESTINATION        = $00040000;
  806.  
  807. { flags for dwFlags parameter of MCI_WHERE command message      }
  808.   MCI_ANIM_WHERE_SOURCE           = $00020000;
  809.   MCI_ANIM_WHERE_DESTINATION      = $00040000;
  810.  
  811. { flags for dwFlags parameter of MCI_UPDATE command message      }
  812.   MCI_ANIM_UPDATE_HDC             = $00020000;
  813.  
  814. {                         }
  815. { MCI extensions for video overlay devices           }
  816. {                         }
  817.  
  818. { flags for dwFlags parameter of MCI_OPEN command message      }
  819.   MCI_OVLY_OPEN_WS                = $00010000;
  820.   MCI_OVLY_OPEN_PARENT            = $00020000;
  821.  
  822. { flags for dwFlags parameter of MCI_STATUS command message      }
  823.   MCI_OVLY_STATUS_HWND            = $00004001;
  824.   MCI_OVLY_STATUS_STRETCH         = $00004002;
  825.  
  826. { flags for dwFlags parameter of MCI_INFO command message      }
  827.   MCI_OVLY_INFO_TEXT              = $00010000; 
  828.  
  829. { flags for dwItem field of MCI_GETDEVCAPS_PARMS parameter block    }
  830.   MCI_OVLY_GETDEVCAPS_CAN_STRETCH = $00004001;
  831.   MCI_OVLY_GETDEVCAPS_CAN_FREEZE  = $00004002;
  832.   MCI_OVLY_GETDEVCAPS_MAX_WINDOWS = $00004003;
  833.  
  834. { flags for dwFlags parameter of MCI_WINDOW command message      }
  835.   MCI_OVLY_WINDOW_HWND            = $00010000;
  836.   MCI_OVLY_WINDOW_STATE           = $00040000;
  837.   MCI_OVLY_WINDOW_TEXT            = $00080000;
  838.   MCI_OVLY_WINDOW_ENABLE_STRETCH  = $00100000;
  839.   MCI_OVLY_WINDOW_DISABLE_STRETCH = $00200000;
  840.  
  841. { flags for hWnd parameter of MCI_OVLY_WINDOW_PARMS parameter block   }
  842.   MCI_OVLY_WINDOW_DEFAULT         = $00000000;
  843.  
  844. { flags for dwFlags parameter of MCI_PUT command message       }
  845.   MCI_OVLY_RECT                   = $00010000;
  846.   MCI_OVLY_PUT_SOURCE             = $00020000;
  847.   MCI_OVLY_PUT_DESTINATION        = $00040000;
  848.   MCI_OVLY_PUT_FRAME              = $00080000;
  849.   MCI_OVLY_PUT_VIDEO              = $00100000;
  850.  
  851. { flags for dwFlags parameter of MCI_WHERE command message      }
  852.   MCI_OVLY_WHERE_SOURCE           = $00020000;
  853.   MCI_OVLY_WHERE_DESTINATION      = $00040000;
  854.   MCI_OVLY_WHERE_FRAME            = $00080000;
  855.   MCI_OVLY_WHERE_VIDEO            = $00100000;
  856.  
  857. TYPE
  858.   LP_Longint =         ^Longint;
  859.   LP_WORD =        ^WORD;
  860.   FOURCC =        LONGINT;
  861.   H_PSTR =        PChar;
  862.   VERSION =        WORD;
  863.  
  864.   LP_WAVEOUTCAPS =     ^WAVEOUTCAPS;
  865.   WAVEOUTCAPS = record
  866.     wMid : WORD;
  867.     wPid : WORD;
  868.     vDriverVersion : VERSION;
  869.     szPname : PChar;
  870.     dwFormats : longint;
  871.     wChannels : WORD;
  872.     dwSupport : longint;
  873.   end;
  874.  
  875.   H_WAVEOUT =        THandle;
  876.   LPH_WAVEOUT =        ^H_WAVEOUT;
  877.  
  878.   LP_WAVEFORMAT =    ^WAVEFORMAT;
  879.   WAVEFORMAT = record
  880.     wFormatTag : WORD;
  881.     nChannels : WORD;
  882.     nSamplesPerSec : LONGINT;
  883.     nAvgBytesPerSec : LONGINT;
  884.     nBlockAlign : WORD;
  885.   end;
  886.  
  887.   LP_WAVEHDR =        ^WAVEHDR;
  888.   WAVEHDR = record
  889.     lpData : pointer;
  890.     dwBufferLength : longint;
  891.     dwBytesRecorded : Longint;
  892.     dwUser : longint;
  893.     dwFlags : longint;
  894.     dwLoops : longint;
  895.     lpNext : pointer;
  896.     reserved : longint;
  897.   end;
  898.  
  899.   { MMTIME SUB RECORDS }
  900.   smpte_rec = record
  901.     hour, min, sec, frame, fps, dummy : BYTE;
  902.   end;
  903.  
  904.   midi_rec = record
  905.     songptrpos : pointer;
  906.   end;
  907.  
  908.   u_rec = record
  909.     ms : longint;               { milliseconds}
  910.     sample : longint;           { samples}
  911.     cb : longint;               { byte count}
  912.     SMPTE : smpte_rec;
  913.     midi : midi_rec;
  914.   end;
  915.  
  916.   LP_MMTIME =        ^MMTIME;
  917.   MMTIME = record
  918.     wType : WORD;              { indicates the contents of the union}
  919.     u : u_rec;
  920.   end;
  921.  
  922.   LP_WAVEINCAPS =    ^WAVEINCAPS;
  923.   WAVEINCAPS = record
  924.     wMid : WORD;
  925.     wPid : WORD;
  926.     vDriverVersion : VERSION;
  927.     szPname : PChar;
  928.     dwFormats : LONGINT;
  929.     wChannels : WORD;
  930.   end;
  931.  
  932.   LPH_WAVEIN =        ^H_WAVEIN;
  933.   H_WAVEIN =        THandle;
  934.  
  935.   LP_MIDIOUTCAPS =    ^MIDIOUTCAPS;
  936.   MIDIOUTCAPS = record
  937.     wMid : WORD;
  938.     wPid : WORD;
  939.     vDriverVersion : VERSION;
  940.     szPname : PChar;
  941.     wTechnology : WORD;
  942.     wVoices : WORD;
  943.     wNotes : WORD;
  944.     wChannelMask : WORD;
  945.     dwSupport : LONGINT;
  946.   end;
  947.  
  948.   LP_HMIDIOUT =        ^H_MIDIOUT;
  949.   H_MIDIOUT =        THandle;
  950.  
  951.   LP_MIDIHDR =        ^MIDIHDR;
  952.   MIDIHDR = record
  953.     lpData : pointer;
  954.     dwBufferLength : longint;
  955.     dwBytesRecorded : longint;
  956.     dwUser : longint;
  957.     dwFlags : longint;
  958.     lpNext : pointer;
  959.     reserved : longint;
  960.   end;
  961.  
  962.   LP_MIDIINCAPS =    ^MIDIINCAPS;
  963.   MIDIINCAPS = record
  964.     wMid : WORD;
  965.     wPid : WORD;
  966.     vDriverVersion : VERSION;
  967.     szPname : PChar;
  968.   end;
  969.  
  970.   LPH_MIDIIN =        ^H_MIDIIN;
  971.   H_MIDIIN =        THandle;
  972.  
  973.   LP_AUXCAPS =        ^AUXCAPS;
  974.   AUXCAPS = record
  975.     wMid : WORD;
  976.     wPid : WORD;
  977.     vDriverVersion : VERSION;
  978.     szPname : PChar;
  979.     wTechnology : WORD;
  980.     dwSupport : longint;
  981.   end;
  982.  
  983.   LP_TIMECALLBACK =    TFarProc;
  984.   { pointer to a function with the following syntax:
  985.  
  986.     function TimerCallBack(
  987.         idTimer : WORD;                 // Timer ID
  988.         msg : WORD;                 // not used
  989.         dwUser : LONGINT;                // User-instance data
  990.         dw1, dw2 : LONGINT) : WORD; EXPORT;     // not used
  991.  
  992.     return is not utilized.
  993.   }
  994.  
  995.  
  996.   LP_TIMECAPS =        ^TIMECAPS;
  997.   TIMECAPS = record
  998.     wPeriodMin : WORD;
  999.     wPeriodMax : WORD;
  1000.   end;
  1001.  
  1002.   LP_JOYCAPS =        ^JOYCAPS;
  1003.   JOYCAPS = record
  1004.     wMid : WORD;
  1005.     wPid : WORD;
  1006.     szPname : PChar;
  1007.     wXmin : WORD;
  1008.     wXmax : WORD;
  1009.     wYmin : WORD;
  1010.     wYmax : WORD;
  1011.     wZmin : WORD;
  1012.     wZmax : WORD;
  1013.     wNumButtons : WORD;
  1014.     wPeriodMin : WORD;
  1015.     wPeriodMax : WORD;
  1016.   end;
  1017.  
  1018.   LP_JOYINFO =        ^JOYINFO;
  1019.   JOYINFO = record
  1020.     wXpos : WORD;
  1021.     wYpos : WORD;
  1022.     wZpos : WORD;
  1023.     wButtons : WORD;
  1024.   end;
  1025.  
  1026.   LP_MMIOPROC =        TFarProc;
  1027.  
  1028.   H_MMIO =        THandle;
  1029.  
  1030.   LP_MMIOINFO =        ^MMIOINFO;
  1031.   MMIOINFO = record
  1032.     { general fields  }
  1033.     dwFlags : longint;        { general status flags                 }
  1034.     fccIOProc : FOURCC;      { pointer to I/O procedure              }
  1035.     pIOProc : LP_MMIOPROC;        { pointer to I/O procedure         }
  1036.     wErrorRet : WORD;      { place for error to be returned          }
  1037.     wReserved : WORD;      { for structure alignment                 }
  1038.  
  1039.     { fields maintained by MMIO functions during buffered I/O}
  1040.     cchBuffer : LONGINT;      { size of I/O buffer (or 0L)           }
  1041.     pchBuffer : H_PSTR;      { start of I/O buffer (or NULL)          }
  1042.     pchNext : H_PSTR;        { pointer to next byte to read/write     }
  1043.     pchEndRead : H_PSTR;     { pointer to last valid byte to read     }
  1044.     pchEndWrite : H_PSTR;    { pointer to last byte to write          }
  1045.     lBufOffset : longint;     { disk offset of start of buffer       }
  1046.  
  1047.     { fields maintained by I/O procedure}
  1048.     lDiskOffset : longint;    { disk offset of next read or write             }
  1049.     adwInfo : array [1..3] of longint;     { data specific to type of MMIOPROC}
  1050.  
  1051.     { other fields maintained by MMIO}
  1052.     dwReserved1 : longint;    { reserved for MMIO use            }
  1053.     dwReserved2 : longint;    { reserved for MMIO use            }
  1054.     hmmio : H_MMIO;          { handle to open file               }
  1055.   end;
  1056.  
  1057.   LP_MMCKINFO =        ^MMCKINFO;
  1058.   MMCKINFO = record
  1059.     ckid :        FOURCC;
  1060.     cksize :         longint;
  1061.     fcctype :        FOURCC;
  1062.     dwDataOffset :    LONGINT;
  1063.     dwFlags :        LONGINT;
  1064.   end;
  1065.  
  1066.   YIELDPROC =        TFarProc;
  1067.  
  1068. { generic parameter block for MCI command messages with no special parameters}
  1069. LP_MCI_GENERIC_PARMS = ^MCI_GENERIC_PARMS;
  1070. MCI_GENERIC_PARMS = record
  1071.     dwCallBack : LONGINT;
  1072. end;
  1073.  
  1074. { parameter block for MCI_OPEN command message}
  1075. MCI_OPEN_PARMS = record
  1076.     dwCallback : LONGINT;
  1077.     wDeviceID : WORD;
  1078.     wReserved0 : WORD;
  1079.     lpstrDeviceType : POINTER;
  1080.     lpstrElementName : POINTER;
  1081.     lpstrAlias : POINTER;
  1082. end;
  1083. LP_MCI_OPEN_PARMS = ^MCI_OPEN_PARMS;
  1084.  
  1085. { parameter block for MCI_PLAY command message}
  1086. MCI_PLAY_PARMS = record
  1087.     dwCallback : LONGINT;
  1088.     dwFrom : LONGINT;
  1089.     dwTo : LONGINT;
  1090. end;
  1091. LP_MCI_PLAY_PARMS = ^MCI_PLAY_PARMS;
  1092.  
  1093. { parameter block for MCI_SEEK command message}
  1094. MCI_SEEK_PARMS = record
  1095.     dwCallback : LONGINT;
  1096.     dwTo : LONGINT;
  1097. end;
  1098. LP_MCI_SEEK_PARMS = ^MCI_SEEK_PARMS;
  1099.  
  1100. { parameter block for MCI_STATUS command message}
  1101. MCI_STATUS_PARMS = record
  1102.     dwCallback : LONGINT;
  1103.     dwReturn : LONGINT;
  1104.     dwItem : LONGINT;
  1105.     dwTrack : LONGINT;
  1106. end;
  1107. LP_MCI_STATUS_PARMS = ^MCI_STATUS_PARMS;
  1108.  
  1109. { parameter block for MCI_INFO command message}
  1110. MCI_INFO_PARMS = record
  1111.     dwCallback : LONGINT;
  1112.     lpstrReturn : POINTER;
  1113.     dwRetSize : LONGINT;
  1114. end;
  1115. LP_MCI_INFO_PARMS = ^MCI_INFO_PARMS;
  1116.  
  1117. { parameter block for MCI_GETDEVCAPS command message}
  1118. MCI_GETDEVCAPS_PARMS = record
  1119.     dwCallback : LONGINT;
  1120.     dwReturn : LONGINT;
  1121.     dwItem : LONGINT;
  1122. end;
  1123. LP_MCI_GETDEVCAPS_PARMS = ^MCI_GETDEVCAPS_PARMS;
  1124.  
  1125. { parameter block for MCI_SYSINFO command message}
  1126. MCI_SYSINFO_PARMS = record
  1127.     dwCallback : LONGINT;
  1128.     lpstrReturn : POINTER;
  1129.     dwRetSize : LONGINT;
  1130.     dwNumber : LONGINT;
  1131.     wDeviceType : WORD;
  1132.     wReserved0 : WORD;
  1133. end;
  1134. LP_MCI_SYSINFO_PARMS = ^MCI_SYSINFO_PARMS;
  1135.  
  1136. { parameter block for MCI_SET command message}
  1137. MCI_SET_PARMS = record
  1138.     dwCallback : LONGINT;
  1139.     dwTimeFormat : LONGINT;
  1140.     dwAudio : LONGINT;
  1141. end;
  1142. LP_MCI_SET_PARMS = ^MCI_SET_PARMS;
  1143.  
  1144. { parameter block for MCI_BREAK command message}
  1145. MCI_BREAK_PARMS = record
  1146.     dwCallback : LONGINT;
  1147.     nVirtKey : INTEGER ;
  1148.     wReserved0 : WORD;
  1149.     hwndBreak : HWND;
  1150.     wReserved1 : WORD;
  1151. end;
  1152. LP_MCI_BREAK_PARMS = ^MCI_BREAK_PARMS;
  1153.  
  1154. { parameter block for MCI_SOUND command message}
  1155. MCI_SOUND_PARMS = record
  1156.     dwCallback : LONGINT;
  1157.     lpstrSoundName : POINTER;
  1158. end;
  1159. LP_MCI_SOUND_PARMS = ^MCI_SOUND_PARMS;
  1160.  
  1161. { parameter block for MCI_SAVE command message}
  1162. MCI_SAVE_PARMS = record
  1163.     dwCallback : LONGINT;
  1164.     lpfilename : POINTER;
  1165. end;
  1166. LP_MCI_SAVE_PARMS = ^MCI_SAVE_PARMS;
  1167.  
  1168. { parameter block for MCI_LOAD command message}
  1169. MCI_LOAD_PARMS = record
  1170.     dwCallback : LONGINT;
  1171.     lpfilename : POINTER;
  1172. end;
  1173. LP_MCI_LOAD_PARMS = ^MCI_LOAD_PARMS;
  1174.  
  1175. { parameter block for MCI_RECORD command message}
  1176. MCI_RECORD_PARMS = record
  1177.     dwCallback : LONGINT;
  1178.     dwFrom : LONGINT;
  1179.     dwTo : LONGINT;
  1180. end;
  1181. LP_MCI_RECORD_PARMS = ^MCI_RECORD_PARMS;
  1182.  
  1183. {}
  1184. { MCI extensions for videodisc devices}
  1185. {}
  1186.  
  1187. { parameter block for MCI_PLAY command message}
  1188. MCI_VD_PLAY_PARMS = record
  1189.     dwCallback : LONGINT;
  1190.     dwFrom : LONGINT;
  1191.     dwTo : LONGINT;
  1192.     dwSpeed : LONGINT;
  1193. end;
  1194. LP_MCI_VD_PLAY_PARMS = ^MCI_VD_PLAY_PARMS;
  1195.  
  1196. { parameter block for MCI_STEP command message}
  1197. MCI_VD_STEP_PARMS = record
  1198.     dwCallback : LONGINT;
  1199.     dwFrames : LONGINT;
  1200. end;
  1201. LP_MCI_VD_STEP_PARMS = ^MCI_VD_STEP_PARMS;
  1202.  
  1203. { parameter block for MCI_ESCAPE command message}
  1204. MCI_VD_ESCAPE_PARMS = record
  1205.     dwCallback : LONGINT;
  1206.     lpstrCommand : POINTER;
  1207. end;
  1208. LP_MCI_VD_ESCAPE_PARMS = ^MCI_VD_ESCAPE_PARMS;
  1209.  
  1210.  
  1211. {}
  1212. { MCI extensions for waveform audio devices}
  1213. {}
  1214.  
  1215. { parameter block for MCI_OPEN command message}
  1216. MCI_WAVE_OPEN_PARMS = record
  1217.     dwCallback : LONGINT;
  1218.     wDeviceID : WORD;
  1219.     wReserved0 : WORD;
  1220.     lpstrDeviceType : POINTER;
  1221.     lpstrElementName : POINTER;
  1222.     lpstrAlias : POINTER;
  1223.     dwBufferSeconds : LONGINT;
  1224. end;
  1225. LP_MCI_WAVE_OPEN_PARMS = ^MCI_WAVE_OPEN_PARMS;
  1226.  
  1227. { parameter block for MCI_DELETE command message}
  1228. MCI_WAVE_DELETE_PARMS = record
  1229.     dwCallback : LONGINT;
  1230.     dwFrom : LONGINT;
  1231.     dwTo : LONGINT;
  1232. end;
  1233. LP_MCI_WAVE_DELETE_PARMS = ^MCI_WAVE_DELETE_PARMS;
  1234.  
  1235. { parameter block for MCI_SET command message}
  1236. MCI_WAVE_SET_PARMS = record
  1237.     dwCallback : LONGINT;
  1238.     dwTimeFormat : LONGINT;
  1239.     dwAudio : LONGINT;
  1240.     wInput : WORD;
  1241.     wReserved0 : WORD;
  1242.     wOutput : WORD;
  1243.     wReserved1 : WORD;
  1244.     wFormatTag : WORD;
  1245.     wReserved2 : WORD;
  1246.     nChannels : WORD;
  1247.     wReserved3 : WORD;
  1248.     nSamplesPerSec : LONGINT;
  1249.     nAvgBytesPerSec : LONGINT;
  1250.     nBlockAlign : WORD;
  1251.     wReserved4 : WORD;
  1252.     wBitsPerSample : WORD;
  1253.     wReserved5 : WORD;
  1254. end;
  1255. LP_MCI_WAVE_SET_PARMS = ^MCI_WAVE_SET_PARMS;
  1256.  
  1257.  
  1258. {}
  1259. { MCI extensions for MIDI sequencer devices}
  1260. {}
  1261.  
  1262. { parameter block for MCI_SET command message}
  1263. MCI_SEQ_SET_PARMS = record
  1264.     dwCallback : LONGINT;
  1265.     dwTimeFormat : LONGINT;
  1266.     dwAudio : LONGINT;
  1267.     dwTempo : LONGINT;
  1268.     dwPort : LONGINT;
  1269.     dwSlave : LONGINT;
  1270.     dwMaster : LONGINT;
  1271.     dwOffset : LONGINT;
  1272. end;
  1273. LP_MCI_SEQ_SET_PARMS = ^MCI_SEQ_SET_PARMS;
  1274.  
  1275.  
  1276. {}
  1277. { MCI extensions for animation devices}
  1278. {}
  1279.  
  1280. { parameter block for MCI_OPEN command message}
  1281. MCI_ANIM_OPEN_PARMS = record
  1282.     dwCallback : LONGINT;
  1283.     wDeviceID : WORD;
  1284.     wReserved0 : WORD;
  1285.     lpstrDeviceType : POINTER;
  1286.     lpstrElementName : POINTER;
  1287.     lpstrAlias : POINTER;
  1288.     dwStyle : LONGINT;
  1289.     hWndParent : WORD;
  1290.     wReserved1 : WORD;
  1291. end;
  1292. LP_MCI_ANIM_OPEN_PARMS = ^MCI_ANIM_OPEN_PARMS;
  1293.  
  1294. { parameter block for MCI_PLAY command message}
  1295. MCI_ANIM_PLAY_PARMS = record
  1296.     dwCallback : LONGINT;
  1297.     dwFrom : LONGINT;
  1298.     dwTo : LONGINT;
  1299.     dwSpeed : LONGINT;
  1300. end;
  1301. LP_MCI_ANIM_PLAY_PARMS = ^MCI_ANIM_PLAY_PARMS;
  1302.  
  1303. { parameter block for MCI_STEP command message}
  1304. MCI_ANIM_STEP_PARMS = record
  1305.     dwCallback : LONGINT;
  1306.     dwFrames : LONGINT;
  1307. end;
  1308. LP_MCI_ANIM_STEP_PARMS = ^MCI_ANIM_STEP_PARMS;
  1309.  
  1310. { parameter block for MCI_WINDOW command message}
  1311. MCI_ANIM_WINDOW_PARMS = record
  1312.     dwCallback : LONGINT;
  1313.     hWnd : WORD;
  1314.     wReserved1 : WORD;
  1315.     nCmdShow : WORD;
  1316.     wReserved2 : WORD;
  1317.     lpstrText : POINTER;
  1318. end;
  1319. LP_MCI_ANIM_WINDOW_PARMS = ^MCI_ANIM_WINDOW_PARMS;
  1320.  
  1321. { parameter block for MCI_PUT, MCI_UPDATE, MCI_WHERE command messages}
  1322. MCI_ANIM_RECT_PARMS = record
  1323.     dwCallback : LONGINT;
  1324.     ptOffset : TPoint;
  1325.     ptExtent : TPoint;
  1326.     rc : TRect;
  1327. end;
  1328. LP_MCI_ANIM_RECT_PARMS = ^MCI_ANIM_RECT_PARMS;
  1329.  
  1330. { parameter block for MCI_UPDATE PARMS}
  1331. MCI_ANIM_UPDATE_PARMS = record
  1332.     dwCallback : LONGINT;
  1333.     rc : TRect;
  1334.     theDC : HDC ;
  1335. end;
  1336. LP_MCI_ANIM_UPDATE_PARMS = ^MCI_ANIM_UPDATE_PARMS;
  1337.  
  1338.  
  1339. {}
  1340. { MCI extensions for video overlay devices}
  1341. {}
  1342.  
  1343. { parameter block for MCI_OPEN command message}
  1344. MCI_OVLY_OPEN_PARMS = record
  1345.     dwCallback : LONGINT;
  1346.     wDeviceID : WORD;
  1347.     wReserved0 : WORD;
  1348.     lpstrDeviceType : POINTER;
  1349.     lpstrElementName : POINTER;
  1350.     lpstrAlias : POINTER;
  1351.     dwStyle : LONGINT;
  1352.     hWndParent : WORD;
  1353.     wReserved1 : WORD;
  1354. end;
  1355. LP_MCI_OVLY_OPEN_PARMS = ^MCI_OVLY_OPEN_PARMS;
  1356.  
  1357. { parameter block for MCI_WINDOW command message}
  1358. MCI_OVLY_WINDOW_PARMS = record
  1359.     dwCallback : LONGINT;
  1360.     hWnd : WORD;
  1361.     wReserved1 : WORD;
  1362.     nCmdShow : WORD;
  1363.     wReserved2 : WORD;
  1364.     lpstrText : POINTER;
  1365. end;
  1366. LP_MCI_OVLY_WINDOW_PARMS = ^MCI_OVLY_WINDOW_PARMS;
  1367.  
  1368. { parameter block for MCI_PUT, MCI_UPDATE, and MCI_WHERE command messages}
  1369. MCI_OVLY_RECT_PARMS = record
  1370.     dwCallback : LONGINT;
  1371.     ptOffset : TPoint;
  1372.     ptExtent : TPoint;
  1373.     rc : TRect;
  1374. end;
  1375. LP_MCI_OVLY_RECT_PARMS = ^MCI_OVLY_RECT_PARMS;
  1376.  
  1377. { parameter block for MCI_SAVE command message}
  1378. MCI_OVLY_SAVE_PARMS = record
  1379.     dwCallback : LONGINT;
  1380.     lpfilename : POINTER;
  1381.     rc : TRect;
  1382. end;
  1383. LP_MCI_OVLY_SAVE_PARMS = ^MCI_OVLY_SAVE_PARMS;
  1384.  
  1385. { parameter block for MCI_LOAD command message}
  1386. MCI_OVLY_LOAD_PARMS = record
  1387.     dwCallback : LONGINT;
  1388.     lpfilename : POINTER;
  1389.     rc : TRect;
  1390. end;
  1391. LP_MCI_OVLY_LOAD_PARMS = ^MCI_OVLY_LOAD_PARMS;
  1392.  
  1393. IMPLEMENTATION
  1394.  
  1395. BEGIN
  1396. END.
  1397.